package com.newtouch.bxzs.business.train.service;

import java.util.List;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.newtouch.bxzs.business.train.model.bo.AppExaminationListBO;
import com.newtouch.bxzs.business.train.model.bo.ExaminationDetailBO;
import com.newtouch.bxzs.business.train.model.bo.ExaminationPCListBO;
import com.newtouch.bxzs.business.train.model.bo.ExaminationUserBO;
import com.newtouch.bxzs.business.train.model.vo.AppExaminationListVO;
import com.newtouch.bxzs.business.train.model.vo.ChangeExaminationEnableStateVO;
import com.newtouch.bxzs.business.train.model.vo.ExaminationPCListVO;
import com.newtouch.bxzs.business.train.model.vo.ExaminationUserForExaminationListVO;
import com.newtouch.bxzs.business.train.model.vo.ModifyExaminationBaseInfoVO;

/**
 * 考试相关业务逻辑
 *
 * <p>
 * <b>History:</b>
 * <table border="1">
 * <tr>
 * <th>Date</th>
 * <th>Operator</th>
 * <th>Memo</th>
 * </tr>
 * <tr>
 * <td>2021/1/21</td>
 * <td>lanwei</td>
 * <td>Create</td>
 * </tr>
 * </table>
 *
 * @author lanwei
 * @version 1.0.0
 * @since 1.0.0
 */
public interface ExaminationService {

    /**
     * 查询PC考试列表
     * @param examinationPCListVO
     * @return
     */
    IPage<ExaminationPCListBO> getExaminationList(ExaminationPCListVO examinationPCListVO);

    /**
     * 创建、修改考试基本信息
     * @param examinationBaseInfoVO
     * @return
     */
    String modifyExaminationBaseInfo(ModifyExaminationBaseInfoVO examinationBaseInfoVO);

    /**
     * 设置、修改考试试卷
     * @param examinationPaperVO
     * @return
     */
//    String modifyExaminationPaper(ModifyExaminationPaperVO examinationPaperVO);

    /**
     * 设置、修改考试参考人员
     * @param examinationUserMapVO
     * @return
     */
//    String modifyExaminationUserMap(ModifyExaminationUserMapVO examinationUserMapVO);

    /**
     * 撤销、发布考试
     * @param examinationEnableStateVO
     */
    void changeExaminationEnableState(ChangeExaminationEnableStateVO examinationEnableStateVO);

    /**
     * 删除考试
     * @param examinationIds 考试id集合
     */
    Integer deleteExamination(List<String> examinationIds);

    /**
     * 获取考试详情
     * @param examinationId 考试id
     * @return
     */
    ExaminationDetailBO getExaminationDetail(String examinationId);

    /**
     * 获取考试设置里面的所有用户列表
     * @param examinationUserForExaminationListVO
     * @return
     */
    IPage<ExaminationUserBO> getExaminationUserForExamination(ExaminationUserForExaminationListVO examinationUserForExaminationListVO);

    /**
     * 批量修改考试参考人员
     * @param examinationId
     * @param examinationUserId
     */
    void updateExaminationUserMap(String examinationId, List<String> examinationUserIds);
    
    /**
     * app获取考试列表
     * @param appExaminationListVO
     * @return
     */
    IPage<AppExaminationListBO> getAppExaminationList(AppExaminationListVO appExaminationListVO);
}
